﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FlyHorse.LIMS.WinApp.Utils
{
    public class PagedList<T> : List<T>
    {
        public int PageIndex { get; private set; }//当前页码减一的值
        public int PageSize { get; private set; } //每页显示行数
        //public int Start { get; private set; }//当前页面显示的第一个页号
        //public int End { get; private set; }//当前页面显示的最后一个页号
        public int TotalPages { get; private set; }//总页数

        /// <summary>
        /// 
        /// </summary>
        /// <param name="source">列表元数据</param>
        /// <param name="pageIndex">页码</param>
        /// <param name="pageSize">每页显示数量</param>
        public PagedList(IQueryable<T> source, int pageIndex,int pageSize)
        {
            PageIndex = pageIndex;//如果pageIndex存在，把pageIndex值进行赋值，否则赋值0
            if (PageIndex - 1 < 0)
            {
                PageIndex = 1;
            }
            PageSize = pageSize;

            PageSize = pageSize;
            //计算总页数 总记录数 / 每页行数 有余+1
            TotalPages = (int)Math.Ceiling(source.Count() / (double)PageSize);

            if (PageIndex>TotalPages)
            {
                PageIndex = TotalPages;
            }

            //将数据分页后存入
            //Skip : 从source的那一位下标开始
            //Take:下标移动多少位
            if (source.Count()>0)
            {
                this.AddRange(source.Skip(PageSize * (PageIndex - 1)).Take(PageSize));
            }
           
            
        }
    }
}
